// 注意所有引用和使用必选放一起，引用先执行
import { createApp } from 'vue'
import App from './App.vue'

// 先在根目录下安装路由 :npm install vue-router@4 -S
// 在根目录下的main.js
import Router from './routers/index.js'

// 引用api
import ApiList from './api/index.js'

// 安装Vant插件具体看官网https://vant-contrib.gitee.io/vant/#/zh-CN/quickstart#an-zhuang
// 引用VantUI
import Vant from 'vant'
// 引用Vant的样式
import 'vant/lib/index.css'

// 安装npm install vue3-cookies --save
// 或
// yarn add vue3-cookies -S
// 引用cookie插件
import Cookie from 'vue3-cookies'

// 创建应用
const app = createApp(App)
	.use(Router)
	.use(Vant)
	.use(ApiList)
	.use(Cookie)
	.mount('#app')

// createApp(App).mount('#app')

// 全局前置路由守卫
//1 这个参数代表 去到哪个路由
//2 这个参数代表 从哪里来
//3 这个参数代表 是否可以去到下一步
//我们可以根据to当中是否有meta信息来判断当前的路由是否需要登录
//这个就是我们常见的判断是否有登录
Router.beforeEach(async (to, from, next) => {
	var IsLogin = to.meta.IsLogin
	if (IsLogin) {
        // 获取当前cookie
		var LoginUser = app.$cookies.get('LoginUser')
		// 如果为空则需要登录
        if (!LoginUser) {
            app.$notify({
				type: 'danger',
				message: '要先登录嗷',
				duration: 1000,
			})
				next('/user/base/login')
				return
		}
        var userid = LoginUser.id ? LoginUser.id :0;
        // 发送请求
        var result = await app.$api.check({userid:userid})
        if(result.code===1)
        {
            // 把里面的LoginUser重新覆盖一遍，即每次跳转一个页面就把cookie更新一遍
            app.$cookies.set('LoginUser',result.data)
            next()
        }else{
            app.$notify({
				type: 'danger',
				message: '非法登录噢',
				duration: 1000,
				onClose: () => {
                    // 清除cookie
                    app.$cookies.remove('LoginUser')
                },
			})
        }
    } else {
		next()
	}
})